(function ($, window, document, undefined) {

$(document).ready(function() {
	
	$klass = $.klass;
	$proto = $klass.prototype;
	$trait = $.trait;
	Trait = $klass.Trait;
	
	module("Wiki Namespace");
	
	test("", function() {
		
	// Namespace
		A = $.klass( "animal.Animal", { init: function () {} } );
		M = $.klass( "animal.mammal.Mammal", "animal.Animal", { init: function () {} } );
		D = $.klass( "animal.mammal.Dolphin", "animal.mammal.Mammal", { init: function () {} } );
		// Namespaces are automatically created as needed.
		
		// Now you have:
		strictEqual(animal.mammal.Dolphin, D, 'animal.mammal.Dolphin === D');  // => true
		strictEqual(window.animal.mammal.Dolphin, D, '(window.animal.mammal.Dolphin === D');  // => true
		strictEqual(D._super, M, 'D._super === M');  // => true
		
		
	// KlassPath
		// Get a klass from a klass path:
		strictEqual($.klassPath( "animal.mammal.Dolphin" ).get(), D, '$.klassPath( "animal.mammal.Dolphin" ).get() === D');  // => true
		strictEqual($.klassPath( "animal.mammal.DoesNotExists" ).get(), undefined, '$.klassPath( "animal.mammal.DoesNotExists" ).get() === undefined');  // => true
		
		// Get a KlassPath from a klass:
		strictEqual(A.klassPath, $.klassPath( "animal.Animal" ), 'A.klassPath === $.klassPath( "animal.Animal" )');  // => true
		
		// Get a KlassPath from an object instance:
		dolphin = new D();
		strictEqual(dolphin.init.klassPath, D.klassPath, 'dolphin.init.klassPath === D.klassPath');  // => true
		
		// Useful properties of KlassPath:
		strictEqual(D.klassPath.namespaceName, "animal.mammal", 'D.klassPath.namespaceName === "animal.mammal"');  // => true
		strictEqual(D.klassPath.klassName, "Dolphin", 'D.klassPath.klassName === "Dolphin"');  // => true
		strictEqual(D.klassPath.fullKlassName, "animal.mammal.Dolphin", 'D.klassPath.fullKlassName === "animal.mammal.Dolphin"');  // => true
		
		M_kp = $.klassPath( "animal.mammal.Mammal" );
		T_kp = $.klassPath( "animal.mammal.Tiger" );
		strictEqual(T_kp.get(), undefined, 'T_kp.get() === undefined');  // => true
		
		T = $.klass( T_kp, M_kp, { } );
		
		strictEqual(T_kp.get(), T, 'T_kp.get() === T');  // => true
		strictEqual(T._super, M, 'T._super === M');  // => true
	});
});

})(jQuery, window, window.document);